Various types of general-purpose microcontroller unit (MCU) applications may involve storing data in a Non Volatile Memory (NVM).
Most MCUs may embed some kind of NVM memories, with the specific type of NVM embedded in the device depending, for instance, on the particular silicon technology used.
For instance, various modern technologies may implement NVMs with flash memories, and the corresponding category of MCUs represents a significant quota of MCUs currently available on the market. Efficiently supporting data storing in NVMs for MCUs embedding flash memories may therefore represent a valuable asset.
When used, e.g., for data, a NVM is expected to exhibit good “endurance” characteristics, e.g., in excess of 100 Kcycles, this meaning that an acceptable figure for the endurance of the non-volatile memory used to store data is too thousand write cycles with a same memory address expected to be written at least 100K times without the risk of failure, i.e. facilitating data integrity.
Flash memories as used, e.g., to store code may exhibit an endurance of 10/20 Kcycles, which is far from the 100,000 cycle figure discussed above.
An option to address this problem may involve embedding in a device a dedicated NVM memory to handle data. While notionally solving the problem, the production cost of such a device would be significantly affected (primarily in terms of silicon cost), thus leading to products hardly competitive on the market.
Another approach may involve handling data write by software, with the user taking care of performing writes at proper physical memory addresses so that a same location is not written too extensively in order to avoid the risk of NVM failure. Such an approach may involve the use of various features such as memory data pointers, erase, data retrieving, and so on, adding complexity on the user side, again making that solution hardly attractive on the market.